home *** CD-ROM | disk | FTP | other *** search
/ MacAddict 118 / MacAddict 118 2006-06.toast / Software / Graphics & Multimedia / MediaCentral 1.2.1 (freeware).dmg / MediaCentral 1.2.1.pkg / Contents / Resources / InstallationCheck < prev    next >
Text File  |  2006-02-02  |  2KB  |  120 lines

  1. #!/usr/bin/perl
  2.  
  3. ########################################################
  4. my $SYSTEM_VERS     = "/System/Library/CoreServices/SystemVersion.plist";
  5. my $EXIT_VALUE         = 0;
  6. ########################################################
  7.  
  8. DO_CHECKS: 
  9. {
  10.  
  11.     # Really old installers need the generic error message.
  12.     if(CheckVersion("$SYSTEM_VERS", "10.1", "ProductVersion", "<")) {
  13.             $EXIT_VALUE = 1;
  14.             last;
  15.     }
  16.  
  17.     # 10.3.0 or better, please.
  18.     if(CheckVersion("$SYSTEM_VERS", "10.4.0", "ProductVersion", "<")) {
  19.             $EXIT_VALUE = (( 1 << 6 ) | ( 1 << 5 ) | 16);
  20.             last;
  21.     }
  22.  
  23.         
  24.     # Must NOT be tier 3
  25.     my $TIER_3_LANG = "/var/db/.AppleTier3Language";
  26.     if (-e $TIER_3_LANG) {
  27.         # return custom error
  28.         $EXIT_VALUE = ( ( 1 << 6 ) | ( 1 << 5 ) | 1 );
  29.         last;
  30.     }
  31.                     
  32. }
  33.  
  34. exit($EXIT_VALUE);
  35.  
  36.  
  37. ########################################################
  38. ########################################################
  39.  
  40. sub CheckVersion
  41. {
  42.     my $path            = $_[0];
  43.     my $version         = $_[1];
  44.     my $keyName         = $_[2];
  45.     my $operator        = $_[3];
  46.     
  47.     my $oldSeperator;
  48.     my $plistData;
  49.     my @items;
  50.     my $item;
  51.     my $versiondata;
  52.     my $i;
  53.     my @theVersionArray;
  54.     my %versiondata;
  55.     my @versionArray;
  56.  
  57.     # if there's no THERE there, we return FALSE
  58.     if (! -e $path) {
  59.         return 0;
  60.     }
  61.  
  62.     if (!$operator) {
  63.         $operator = "==";
  64.     }
  65.  
  66.     $oldSeperator = $/;
  67.     $/ = \0;
  68.  
  69.     open( PLIST, "$path") || do {
  70.         return 0;
  71.     };
  72.  
  73.     $plistData = <PLIST>;
  74.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  75.  
  76.     @items = split(/<key>/, $plistData);
  77.  
  78.     shift @items;
  79.     foreach $item (@items) {
  80.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  81.         $versiondata{ $1 } = $2;
  82.     }
  83.  
  84.     close(PLIST);
  85.  
  86.     $/ = $oldSeperator;
  87.  
  88.     @theVersionArray = split(/\./, $versiondata{$keyName});
  89.     for ($i = 0; $i < 3; $i++) {
  90.         if(!$theVersionArray[$i]) {
  91.             $theVersionArray[$i] = '0';
  92.         }
  93.     }
  94.  
  95.     @versionArray = split(/\./, $version);
  96.     
  97.     my $actualVersion;
  98.  
  99.     for ($i = 0; $i < 3; $i++) {
  100.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  101.  
  102.             $actualVersion = $theVersionArray[$i];
  103.             $version = $versionArray[$i];
  104.  
  105.             last;
  106.         }
  107.     }
  108.  
  109.     my $expression = '$actualVersion ' . $operator . ' $version';
  110.     if( eval ($expression) )
  111.     {
  112.         return 1;
  113.     }
  114.     else
  115.     {
  116.         return 0;
  117.     }
  118.  
  119. }
  120.